home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / ctutor.exe / SOURCE / UNION2.C < prev    next >
C/C++ Source or Header  |  1994-05-15  |  2KB  |  66 lines

  1.                               /* Chapter 11 - Program 6 - UNION2.C */
  2. #include "stdio.h"
  3. #define AUTO  1
  4. #define BOAT  2
  5. #define PLANE 3
  6. #define SHIP  4
  7.  
  8. struct automobile {           /* structure for an automobile       */
  9.    int tires;
  10.    int fenders;
  11.    int doors;
  12. };
  13.  
  14. typedef struct {              /* structure for a boat or ship      */
  15.    int  displacement;
  16.    char length;
  17. } BOATDEF;
  18.  
  19. struct {
  20.    char vehicle;              /* what type of vehicle?             */
  21.    int  weight;               /* gross weight of vehicle           */
  22.    union {                    /* type-dependent data               */
  23.       struct automobile car;  /* part 1 of the union               */
  24.       BOATDEF boat;           /* part 2 of the union               */
  25.       struct {
  26.          char engines;
  27.          int wingspan;
  28.       } airplane;             /* part 3 of the union               */
  29.       BOATDEF ship;           /* part 4 of the union               */
  30.    } vehicle_type;
  31.    int  value;                /* value of vehicle in dollars       */
  32.    char owner[32];            /* owners name                       */
  33. } ford, sun_fish, piper_cub;  /* three variable structures         */
  34.  
  35. void main()
  36. {
  37.        /* define a few of the fields as an illustration            */
  38.  
  39.    ford.vehicle = AUTO;
  40.    ford.weight = 2742;               /* with a full gas tank       */
  41.    ford.vehicle_type.car.tires = 5;  /* including the spare        */
  42.    ford.vehicle_type.car.doors = 2;
  43.  
  44.    sun_fish.value = 3742;            /* trailer not included       */
  45.    sun_fish.vehicle_type.boat.length = 20;
  46.  
  47.    piper_cub.vehicle = PLANE;
  48.    piper_cub.vehicle_type.airplane.wingspan = 27;
  49.  
  50.    if (ford.vehicle == AUTO)       /* which it is in this case     */
  51.       printf("The ford has %d tires.\n", 
  52.                                       ford.vehicle_type.car.tires);
  53.  
  54.    if (piper_cub.vehicle == AUTO)  /* which it is not in this case */
  55.       printf("The plane has %d tires.\n",
  56.                                  piper_cub.vehicle_type.car.tires);
  57. }
  58.  
  59.  
  60.  
  61. /* Result of execution
  62.  
  63. The ford has 5 tires.
  64.  
  65. */
  66.